package com.jyw.business.ins.domain.vo.web;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.jyw.business.ins.domain.InsConfigItem;
import com.jyw.common.annotation.Conversion;
import com.jyw.common.annotation.Excel;
import com.jyw.common.constant.SysDictTypeConstant;
import com.jyw.common.enums.ConversionType;
import com.jyw.common.utils.bean.BeanUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldNameConstants;
import org.springframework.util.ObjectUtils;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;

/**
 * @author 沈峻
 * @ClassName ItemListVo
 * @Description TODO
 * @Date 2023/9/20 17:33
 **/
@Data
@ApiModel("当前巡检项响应实体")
@FieldNameConstants
@NoArgsConstructor
public class ItemListVo {

    /** 主键 */
    @ApiModelProperty("主键")
    private Long id;

    /** 配置主表ID（资产 单元） */
    @ApiModelProperty("配置主表ID（资产 单元）")
    private Long parentId;

    /** 配置类型（1资产类型 2巡检单元） */
    @ApiModelProperty("配置类型（1资产类型 2巡检单元）")
    private Integer parentType;

    /** 巡检项名称 */
    @ApiModelProperty("巡检项名称")
    private String itemName;

    /** 巡检项类型（1数值型 2选项型） */
    @ApiModelProperty("巡检项类型（1数值型 2选项型）")
    @Conversion(value = ConversionType.DICT,dictType = SysDictTypeConstant.INS_ITEM_TYPE)
    private Integer itemType;

    @ApiModelProperty("巡检项标签")
    private String itemTypeToName;

    /** 巡检项单位（数据字典） */
    @ApiModelProperty("巡检项单位（数据字典）")
    @Conversion(value = ConversionType.DICT,dictType = SysDictTypeConstant.INS_ITEM_UNIT)
    private String itemUnit;

    @ApiModelProperty("巡检项单位标签")
    private String itemUnitToName;

    /** 阈值最小值 */
    @ApiModelProperty("阈值最小值")
    private BigDecimal minValue;

    /** 阈值最大值 */
    @ApiModelProperty("阈值最大值")
    private BigDecimal maxValue;

    /** 默认值数值 */
    @ApiModelProperty("默认值数值")
    private BigDecimal defaultValue;

    /** 选项内容（多条用逗号隔开） */
    @ApiModelProperty("选项内容（多条用逗号隔开）")
    private List<String> optionContent;

    /** 默认值选项 */
    @ApiModelProperty("默认值选项")
    private String defaultOption;

    /** 异常值选项（多条用逗号隔开） */
    @ApiModelProperty("异常值选项")
    private List<String> errorOption;

    /** 是否启用（1是 0否） */
    @ApiModelProperty("是否启用（1是 0否）")
    private Integer isEnable;

    /** 排序 */
    @ApiModelProperty("排序")
    private Long sort;

    public ItemListVo(InsConfigItem item) {
        BeanUtils.copyProperties(item,this);
        //选项内容
        if(!ObjectUtils.isEmpty(item.getOptionContent())){
            setOptionContent(Arrays.asList(item.getOptionContent().split(",")));
        }
        //异常值选项
        if(!ObjectUtils.isEmpty(item.getErrorOption())){
            setErrorOption(Arrays.asList(item.getErrorOption().split(",")));
        }
    }
}
